home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS / testcpp / 3 / test.g < prev   
Encoding:
Text File  |  1994-09-14  |  1.2 KB  |  48 lines  |  [TEXT/MPS ]

  1. /* Ariel Tamches (tamches@cs.wisc.edu): This tests linking in a simple non-DLG scanner */
  2.  
  3. /* All TokenType's must have some end-of-file token;  You must define
  4.  * it with setEofToken() to your end of input token.
  5.  *
  6.  * We assume that #tokdefs is  employed for this example; i.e., ANTLR does
  7.  * NOT assign token numbers.
  8.  *
  9.  * ANTLR option -gx must be used to turn off generation of DLG crud (when you
  10.  * want to define your own token stream).
  11.  */
  12.  
  13. #tokdefs "mytokens.h"
  14.  
  15. /* user must define ANTLRToken outside of #header */
  16. <<
  17. typedef ANTLRCommonToken ANTLRToken;    /* use a predefined Token class */
  18. >>
  19.  
  20. /* At this point, ANTLRToken and ANTLRTokenStream are defined, user must now
  21.  * derive a class from ANTLRTokenStream (which embodies the user's scanner)
  22.  */
  23. <<#include "MyLexer.h">>
  24.  
  25. <<
  26. main()
  27. {
  28.     /* create one of my scanners */
  29.     MyLexer scan;
  30.     ANTLRTokenBuffer pipe(&scan);
  31.     /* create a parser of type Expr hooked to my scanner */
  32.     Expr parser(&pipe);
  33.     parser.init();
  34.     parser.setEofToken(Eof);
  35.  
  36.     parser.e();                /* start parsing at rule 'e' of that parser */
  37. }
  38. >>
  39.  
  40. class Expr {
  41.  
  42. e    :    IDENTIFIER NUMBER
  43.         <<fprintf(stderr, "text is %s,%s\n", $1->getText(), $2->getText());>>
  44.         Eof
  45.     ;
  46.  
  47. }
  48.